package com.ld.poetry.service.impl;

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import static java.lang.Thread.sleep;

/**
 * 新增功能，测试缓存，模拟耗时任务
 * 用于答辩演示
 * timeoutTask方法会在第一次执行后，会等待timeout毫秒，
 * 再次执行时，直接从缓存中获取，不会执行方法体，也就不会再等待timeout时间
 * created by vital on 2024/12/8 下午1:09
 */
@Service
public class TestCacheService {

    /**
     * 测试缓存，模拟耗时任务
     * @param key 键，重复键进入缓存
     * @param timeout 模拟任务执行事件，单位ms
     * @return
     * @throws InterruptedException
     */
    @Cacheable(value = "testCache",key = "#key")
    public String timeoutTask(String key, long timeout) throws InterruptedException {
        System.out.println("开始执行任务："+key);
        // 休眠timeout
        sleep(timeout);
        System.out.println("执行任务完毕："+key);
        return key;
    }


}
